package com.lgl.allpeoplevent.system.service;

import com.lgl.scsapi.base.dao.DaoSupport;
import com.lgl.scsapi.system.model.PageData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Calendar;
import java.util.List;

/**
 * 用户统计相关service
 */
@Slf4j
@Service
public class UserCountService {
	@Autowired
	private DaoSupport dao;

	/**
	 * 保存用户统计数据
	 * @param savePd 要保存的用户统计数据
	 * @return 影响的行数
	 */
	public int saveUserCount(PageData savePd) {
		return dao.save("UserCountMapper.saveUserCount", savePd);
	}
	/**
	 * 统计主页访问次数
	 * @param pd 用户ID和年份等参数
	 * @return 主页访问次数数据集
	 */
	public List<PageData> countHomeAccessNum(PageData pd){
		return (List<PageData>) dao.findForList("UserCountMapper.countHomeAccessNum", pd);
	}
	/**
	 * 统计某用户访问网站次数
	 * @param pd 用户ID和年份等参数
	 * @return 某用户访问网站次数数据集
	 */
	public List<PageData> countAccessSiteNum(PageData pd){
		return (List<PageData>) dao.findForList("UserCountMapper.countAccessSiteNum", pd);
	}

	/**
	 * 用户主页被访问总数/访问本站次数+1
	 * @param hsPd 包含用户ID，短年月，要加1的字段
	 * @return 修改成功的行数
	 */
	public int homeSiteTotalAddOne(PageData hsPd){
		if (!hsPd.containsKey("shortYearMonth")){
			Calendar calendar = Calendar.getInstance();
			String year = String.valueOf(calendar.get(Calendar.YEAR));
			int month = calendar.get(Calendar.MONTH) + 1;
			String monthStr = month < 10 ? "0" + month : String.valueOf(month);
			hsPd.put("shortYearMonth", year.substring(2,4) + monthStr);
		}
		return dao.update("UserCountMapper.homeSiteTotalAddOne", hsPd);
	}

}
